#include "pch.hpp"
#include "Commands.hpp"

#include <boost/uuid/uuid_generators.hpp>

using namespace Engine;
using namespace Engine::Debugger;




Command::Command()
	: Message(boost::uuids::random_generator()())
{}
///////////////////////////////////////////////////////////////////////////////////////////////////

Command::~Command()
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




Command::Type AttachCommand::type() const
{
	return Attach;
}
///////////////////////////////////////////////////////////////////////////////////////////

Command::Type ContinueCommand::type() const
{
	return Continue;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

Command::Type PauseCommand::type() const
{
	return Pause;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

Command::Type StopCommand::type() const
{
	return Stop;
}
///////////////////////////////////////////////////////////////////////////////////////////

Command::Type DetachCommand::type() const
{
	return Detach;
}
///////////////////////////////////////////////////////////////////////////////////////////




SetBreakpointCommand::SetBreakpointCommand()
{}
///////////////////////////////////////////////////////////////////////////////////////////

SetBreakpointCommand::SetBreakpointCommand(const std::string& module, const std::string& section, int line, bool set)
	: m_module(module)
	, m_section(section)
	, m_line(line)
	, m_set(set)
{}
///////////////////////////////////////////////////////////////////////////////////////////

void SetBreakpointCommand::store(boostext::iostreams::bin_ostream& stream) const
{
	__super::store(stream);

	stream << m_module;
	stream << m_section;
	stream << m_line;
	stream << m_set;
}
///////////////////////////////////////////////////////////////////////////////////////////

void SetBreakpointCommand::restore(boostext::iostreams::bin_istream& stream)
{
	__super::restore(stream);

	stream >> m_module;
	stream >> m_section;
	stream >> m_line;
	stream >> m_set;
}
///////////////////////////////////////////////////////////////////////////////////////////

Command::Type SetBreakpointCommand::type() const
{
	return SetBreakpoint;
}
///////////////////////////////////////////////////////////////////////////////////////////

const std::string& SetBreakpointCommand::module() const
{
	return m_module;
}
///////////////////////////////////////////////////////////////////////////////////////////

const std::string& SetBreakpointCommand::section() const
{
	return m_section;
}
///////////////////////////////////////////////////////////////////////////////////////////

int SetBreakpointCommand::line() const
{
	return m_line;
}
///////////////////////////////////////////////////////////////////////////////////////////

bool SetBreakpointCommand::set() const
{
	return m_set;
}
///////////////////////////////////////////////////////////////////////////////////////////

Command::Type GetScriptState::type() const
{
	return Message::GetScriptState;
}
///////////////////////////////////////////////////////////////////////////////////////////

Command::Type GetCallstackCommand::type() const
{
	return GetCallstack;
}
///////////////////////////////////////////////////////////////////////////////////////////




Message::Type GetVariableCommand::type() const
{
	return GetVariable;
}
///////////////////////////////////////////////////////////////////////////////////////////
